package com.trade.module.base.service;

import com.trade.module.base.entity.Dictionary;
import com.trade.common.utils.ResponsePaging;
import com.trade.module.base.vo.DictionaryVo;

import java.util.List;

/**
 * Class Description:
 *
 * @Version v1.0 2017/4/22 22:58
 * @JDK version 1.8.0_51
 * @Author zfb
 */
public interface DictionaryService {
    /**
     * 获取字典值
     * @return List<Dictionary>
     */
    List<Dictionary> findDictionaryAll();

    /**
     * Method description：根据条件分页查询数据字典
     *
     * @param pageNum           当前页码，为null或者为0将查询所有有效数据
     * @param pageSize           每页查询条数，默认为10
     * @param sortJsonArray      排序的json数组，格式为[{property:"排序字段名",direction:"ASC/DESC"}]，null、空字符串及[]将被认为是不进行排序
     * @param conditionJsonArray 查询条件的json数组，格式为[{property:"字段名",option:"操作类型",value:"值",propertytype:"数据类型"}]
     *                           其中option的值有EQ(等于), IN(在值数组中), ISNULL(非空), LIKE(包含), GT(大于), LT(小于), GTE(大于等于),
     *                           LTE(小于等于), NE(不等于),LIKEIGNORE(包含，忽略大小写)
     *                           propertytype为DATETIME或DATE，DATETIME值格式为YYYY-MM-dd HH:mm:ss，DATE值格式为YYYY-MM-dd
     *                           <p/>
     *                           conditionJsonArray为null、空字符串及[]将被认为是不进行条件过滤
     * @return ResponsePaging
     */
    ResponsePaging<List<Dictionary>> findDictionaryPageByCondition(Integer pageNum,
                                                                   Integer pageSize,
                                                                   String sortJsonArray,
                                                                   String conditionJsonArray);

    /**
     * 根据ID删除数据字典
     *
     * @param id 字典id
     * @param userId 当前登录用户id
     */
    int deleteById(String id, String userId);


    /**
     * 根据ID查询数据字典
     * @param id 字典id
     */
    DictionaryVo getById(String id);

    /**
     * 新增数据字典
     *
     * @param dictionaryVo 字典vo对象
     * @return Dictionary
     */
    Dictionary save(DictionaryVo dictionaryVo);
}
